package com.thiswhyme.storage.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.Map;

/**
 * @description: 对象存储配置属性
 * @author: thiswhyme
 * @date: 2021/6/29
 */
@Data
@ConfigurationProperties(prefix = "storage")
public class StorageProperties {

    /**
     * 阿里云对象存储配置
     */
    private Map<String, OssProperty> oss;

    /**
     * 腾讯云对象存储配置
     */
    private Map<String, CosProperty> cos;

    /**
     * 七牛云对象存储配置
     */
    private Map<String, KodoProperty> kodo;

    /**
     * 华为云对象存储配置
     */
    private Map<String, ObsProperty> obs;

    /**
     * 百度云对象存储配置
     */
    private Map<String, BosProperty> bos;

    @Data
    public static class OssProperty {

        /**
         * 服务端点
         */
        private String endpoint;

        /**
         * 准入key
         */
        private String accessKey;

        /**
         * 准入密钥
         */
        private String secretKey;

        /**
         * 存储桶
         */
        private String bucketName;

        /**
         * 域名
         */
        private String domain;
    }

    @Data
    public static class CosProperty {

        /**
         * 区域
         */
        private String region;

        /**
         * 准入key
         */
        private String secretId;

        /**
         * 准入密钥
         */
        private String secretKey;

        /**
         * 存储桶
         */
        private String bucketName;

        /**
         * 域名
         */
        private String domain;
    }

    @Data
    public static class KodoProperty {

        /**
         * 准入key
         */
        private String accessKey;

        /**
         * 准入密钥
         */
        private String secretKey;

        /**
         * 存储桶
         */
        private String bucketName;

        /**
         * 域名
         */
        private String domain;
    }

    @Data
    public static class ObsProperty {

        /**
         * 服务端点
         */
        private String endpoint;

        /**
         * 准入key
         */
        private String accessKey;

        /**
         * 准入密钥
         */
        private String secretKey;

        /**
         * 存储桶
         */
        private String bucketName;

        /**
         * 域名
         */
        private String domain;
    }

    @Data
    public static class BosProperty {

        /**
         * 服务端点
         */
        private String endpoint;

        /**
         * 准入key
         */
        private String accessKey;

        /**
         * 准入密钥
         */
        private String secretKey;

        /**
         * 存储桶
         */
        private String bucketName;

        /**
         * 域名
         */
        private String domain;
    }
}
